home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1997-01-27 | 5.7 KB | 188 lines |
- 10 '555TIMER - 19 JAN 91 rev. 27 SEP 96
- 20 'formulae from Radio Shack "Programs for Electronic Circuit Design"
- 30 'by David Leithauser, cat.#62-1054, pages 85-87
- 40 IF EX$=""THEN EX$="EXIT"
- 50 CLS:KEY OFF
- 60 COLOR 7,0,1
- 70 UL$=STRING$(80,205)
- 80 U$="######,###.###"
- 90 U1$="######,###.##"
- 100 U2$="######,###"
- 110 '
- 120 '.....start
- 130 CLS
- 140 C=0:C1=0:D=0:F=0:R=0:R1=0:R2=0
- 150 COLOR 15,2
- 160 PRINT " 555 TIMER CALCULATOR";TAB(57);"by George Murphy VE3ERP ";
- 170 COLOR 1,0:PRINT STRING$(80,223);
- 180 COLOR 7,0
- 190 PRINT " Press number in < > for:"
- 200 PRINT UL$;
- 210 PRINT " < 1 > ASTABLE application (Free-Running Multivibrator)"
- 220 PRINT " < 2 > MONOSTABLE application (One-shot Timer)"
- 230 PRINT UL$;
- 240 PRINT " < 0 > EXIT"
- 250 Z$=INKEY$
- 260 IF Z$="0"THEN CLS:RUN EX$
- 270 IF Z$="1"THEN 310
- 280 IF Z$="2"THEN 1040
- 290 GOTO 250
- 300 '
- 310 '.....Astable multivibrator
- 320 VIEW PRINT 3 TO 24:CLS:VIEW PRINT
- 330 TWO$="TRIG":SIX$="R2 -"
- 340 LOCATE 1:COLOR 15,2
- 350 PRINT " 555 TIMER AS AN ASTABLE FREE-RUNNING MULTIVIBRATOR"
- 360 COLOR 1,0:PRINT STRING$(80,223);
- 370 '
- 380 '.....inputs
- 390 GOSUB 1430
- 400 LOCATE 4
- 410 IF F THEN 430
- 420 INPUT " ENTER: Freq.in Hz.(0 if unknown)......";F:GOSUB 530
- 430 IF F AND C=0 THEN R2=1000
- 440 IF R1 THEN 460
- 450 CR1=1:GOSUB 1430:INPUT " ENTER: R1 in ohms (0 if unknown)....";R1:GOSUB 530
- 460 IF R2 THEN 480
- 470 CR2=1:GOSUB 1430:INPUT " ENTER: R2 in ohms (0 if unknown)....";R2:GOSUB 530
- 480 IF C THEN 390
- 490 CC=1:GOSUB 1430:INPUT " ENTER: C1 in >F. (0 if unknown).....";C
- 500 C=C/10^6:GOSUB 530
- 510 GOTO 380
- 520 '
- 530 '.....calculate
- 540 IF R1*R2*C THEN F=1/0.693/((R1+2*R2)*C):GOTO 600
- 550 IF R1*R2*F THEN C=1/0.693/((R1+2*R2)*F):GOTO 600
- 560 IF C*F*R2 THEN R1=1/0.693/(C*F)-2*R2:GOTO 600
- 570 IF C*F*R1 THEN R2=1/0.693/2/(C*F)-R1/2:GOTO 600
- 580 RETURN
- 590 '
- 600 '.....display results
- 610 VIEW PRINT 3 TO 24:CLS:VIEW PRINT
- 620 CR1=1:CR2=1:CC=1
- 630 GOSUB 1430:LOCATE 3
- 640 PRINT " Frequency ........:";USING U2$;F;:PRINT " Hz."
- 650 PRINT " R1 ...............:";USING U2$;R1;:PRINT " -"
- 660 PRINT " R2 ...............:";USING U2$;R2;:PRINT " -"
- 670 PRINT " C1 ...............:";USING U$;C*10^6;:PRINT " >F"
- 680 HT=0.693*(R1+R2)*C*10^3 'high time
- 690 LT=0.693*R2*C*10^3 'low time
- 700 PRINT " Pulse Cycle Time :";USING U1$;LT+HT;:PRINT " milliseconds"
- 710 PRINT " Output Low Time :";USING U$;LT;:PRINT " milliseconds"
- 720 PRINT " Output High Time :";USING U$;HT;:PRINT " milliseconds"
- 730 PRINT " Percent High Time :";USING U$;(HT/(HT+LT)*100);:PRINT " %"
- 740 COLOR 0,7
- 750 IF ABS(R1)<1000 THEN PRINT" R1 should be 1000 - or more ! "
- 760 IF ABS(R2)<1000 THEN PRINT" R2 should be 1000 - or more ! "
- 770 IF R1+R2>3.3E+06 THEN PRINT" Total of R1+R2 should be 3.3 meg- or less ! "
- 780 IF ABS(C)<0 THEN PRINT" C1 should be .0005 >F or more ! "
- 790 IF F>10^6 THEN PRINT " Frequency should be 1.0 MHz or less ! "
- 800 IF R1<0 OR R1<0 OR C<0 THEN PRINT"* WARNING - IMPOSSIBLE COMPONENT VALUES *"
- 810 COLOR 7,0
- 820 LOCATE 16:PRINT " (NOTE: Calculated values have been rounded off)"
- 830 LOCATE 18
- 840 PRINT " Percent High Time is a function of the relationship of R1 to R2."
- 850 PRINT " Percent High Time must be greater than 50% and less than 100%."
- 860 PRINT
- 870 PRINT " Would you like to change the Percent High Time? (y/n)"
- 880 Z$=INKEY$
- 890 IF Z$="n"THEN VIEW PRINT 18 TO 24:CLS:VIEW PRINT:GOSUB 1750:GOTO 1010
- 900 IF Z$="y"THEN 930
- 910 GOTO 880
- 920 PRINT UL$;
- 930 LOCATE CSRLIN-1:PRINT STRING$(79,32):LOCATE CSRLIN-1
- 940 INPUT " ENTER: Desired Percent High Time...........";PC
- 950 P=PC/100
- 960 Y=(2*P-1)/(1-P) 'ratio R1:R2
- 970 T=R1+2*R2 'constant
- 980 R2=T/(Y+2) 'new value of R2
- 990 R1=R2*Y
- 1000 F=0:GOTO 540
- 1010 GOTO 120
- 1020 '
- 1030 '.....monostable multivibrator
- 1040 VIEW PRINT 3 TO 24:CLS:VIEW PRINT
- 1050 TWO$="IN ":SIX$="CALL"
- 1060 LOCATE 1:COLOR 15,2
- 1070 PRINT " 555 TIMER AS A ONE-SHOT TIMER"
- 1080 COLOR 1,0:PRINT STRING$(80,223);
- 1090 COLOR 7,0
- 1100 '
- 1110 '.....inputs
- 1120 GOSUB 1430:LOCATE 4:IF D THEN 1140
- 1130 INPUT " ENTER: Pulse in sec.(0 if unknown)";D:GOSUB 1210
- 1140 IF R THEN 1160
- 1150 CR1=1:GOSUB 1430:INPUT " ENTER: R1 in ohms...(0 if unknown)";R:GOSUB 1210
- 1160 IF C THEN 1120
- 1170 CC=1:GOSUB 1430:INPUT " ENTER: C1 in >F. ...(0 if unknown)";C
- 1180 C=C/10^6:GOSUB 1210
- 1190 GOTO 1110
- 1200 '
- 1210 '.....calculation
- 1220 IF D*C THEN R=D/(1.443*C):GOTO 1270 '1.443=1/.693
- 1230 IF D*R THEN C=D/(1.443*R):GOTO 1270
- 1240 IF R*C THEN D=1.443*R*C:GOTO 1270
- 1250 RETURN
- 1260 '
- 1270 '.....display results
- 1280 VIEW PRINT 3 TO 24:CLS
- 1290 CR1=1:CC=1
- 1300 GOSUB 1430:LOCATE 3
- 1310 PRINT " R1 ..............:";USING U2$;R;:PRINT " -"
- 1320 PRINT " C1 ..............:";USING U$;C*10^6;:PRINT " >F"
- 1330 PRINT " Pulse duration ..:";USING U$;D;:PRINT " seconds"
- 1340 COLOR 0,7
- 1350 IF R>3.3E+06 THEN PRINT " R1 should be 3.3 megohms or less ! "
- 1360 IF ABS(R)<10^3 THEN PRINT " R1 should be 1000 ohms or more ! "
- 1370 IF ABS(C)<0 THEN PRINT " C1 should be .0005 >F or more ! "
- 1380 COLOR 7,0
- 1390 LOCATE 16:PRINT " (NOTE: Calculated values have been rounded off)"
- 1400 GOSUB 1750
- 1410 GOTO 120 'start
- 1420 '
- 1430 '.....diagram
- 1440 VIEW PRINT 3 TO 24:CLS:VIEW PRINT
- 1450 COLOR 7,0
- 1460 LN=3 'line
- 1470 CN=52 'base column
- 1480 COLOR 0,7
- 1490 LOCATE LN+ 0,CN:PRINT " +5v to +15v "
- 1500 LOCATE LN+ 1,CN:PRINT " CALL "
- 1510 LOCATE LN+ 2,CN:PRINT " VARPTRSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDCOLOR CALL "
- 1520 LOCATE LN+ 3,CN:PRINT " GRND <0xB4!>1 8BLOADSOUND<0xB4!> V+ "
- 1530 LOCATE LN+ 4,CN:PRINT " CALL CALL R1 - "
- 1540 LOCATE LN+ 5,CN:PRINT " <0xB4!>2 7BLOADSOUND<0xB4!> Discharge "
- 1550 LOCATE LN+ 6,CN:PRINT " CALL 555 CALL "
- 1560 LOCATE LN+ 7,CN:PRINT " OUT <0xB4!>3 6BLOADSOUND<0xB4!> Threshold "
- 1570 LOCATE LN+ 8,CN:PRINT " CALL CALL CALL "
- 1580 LOCATE LN+ 9,CN:PRINT " V+ <0xB4!>4 5BLOAD CALL Control V "
- 1590 LOCATE LN+10,CN:PRINT " CLSSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUND' CALL "
- 1600 LOCATE LN+11,CN:PRINT " C1 >F "
- 1610 LOCATE LN+12,CN:PRINT " CALL "
- 1620 LOCATE LN+13,CN:PRINT " \\MOTOR\\ "
- 1630 LOCATE LN+6,CN+16:PRINT SIX$
- 1640 COLOR 7,0
- 1650 LOCATE LN+14:PRINT UL$;
- 1660 '.....hi-lites
- 1670 IF CR1 THEN COLOR 7,0:LOCATE LN+4,CN+15:PRINT " R1 -"
- 1680 IF CR2 THEN COLOR 7,0:LOCATE LN+6,CN+15:PRINT " ";SIX$
- 1690 IF CC THEN COLOR 7,0:LOCATE LN+11,CN+15:PRINT " C1 >F"
- 1700 CR1=0:CR2=0:CC=0
- 1710 COLOR 7,0
- 1720 LOCATE CSRLIN-1
- 1730 RETURN
- 1740 '
- 1750 'HARDCOPY
- 1760 GOSUB 1870:LOCATE 25,2:COLOR 14,6
- 1770 PRINT " Press 1 to print screen, 2 to print screen & ";
- 1780 PRINT "advance paper, or 3 to continue.";:COLOR 7,0
- 1790 Z$=INKEY$:IF Z$="3"THEN GOSUB 1870:RETURN
- 1800 IF Z$="1"OR Z$="2"THEN GOSUB 1870:GOTO 1820
- 1810 GOTO 1790
- 1820 FOR QX=1 TO 24:FOR QY=1 TO 80
- 1830 LPRINT CHR$(SCREEN(QX,QY));
- 1840 NEXT QY:NEXT QX
- 1850 IF Z$="2"THEN LPRINT CHR$(12)
- 1860 GOTO 1760
- 1870 LOCATE 25,1:PRINT STRING$(80,32);:RETURN
-